// 下划线转换驼峰
function toHump(name) {
    return name.replace(/\_(\w)/g, function(all, letter){
        return letter.toUpperCase();
    });
}
// 驼峰转换下划线
function toLine(name) {
  return name.replace(/([A-Z])/g,"_$1").toLowerCase();
}

// 下划线对象转驼峰对象
function _Obj2HumpObj(obj){
	var newObj = new Object()
	var toHump = function(name) {
	    return name.replace(/\_(\w)/g, function(all, letter){
	        return letter.toUpperCase();
	    });
	}
	for(key in obj){
		newObj[toHump(key)] = obj[key]
	}
	return newObj
}
 
// 测试
let a = 'a_b2_345_c2345';
console.log(toHump(a));
 
let b = 'aBdaNf';
console.log(toLine(b));

/* 非正则方式 */

/* 字符串下划线转驼峰 */
function _toHump(key){
	// 去除首尾的下划线
	// var _key = key.replace(/(^_*)|(_*$)/g,"")
	var splitKey = _key.split("_")
	var HumpKey = splitKey.map((item,index)=>{
		if(index>0 && item!=""){
			item = item[0].toUpperCase()+item.slice(1)
		}
		return item
	})
	return HumpKey.join("")
}

/* 字符串驼峰转下划线 */
function hump2_(key){
	var splitKey = key.split("")
	var HumpKey = splitKey.map((item,index)=>{
		// 判断是否为大写字母
		if(index>0 && item>="A" && item <= "Z"){
			item = "_" + item
		}
		return item
	})
	return HumpKey.join("")
}